#ifndef __TRANSFILE_H
#define __TRANSFILE_H

#include "utils.h"


#define BUFFER_SIZE 4096 ///< 缓冲区大小

/**
 * @brief 文件信息结构体
 *
 */
typedef struct
{
    char file_name[MAX_PATH_LEN]; /**< 文件名 */
    long file_size;               /**< 文件大小 */
    char md5[33];                 /**< 文件MD5值 */
    bool is_complete;             /**< 是否传输完成 */
    long offset;                  /**< 文件偏移量 */
} FileInfo_t;

/**
 * @brief 客户端请求上传文件
 *
 * @param arg 客户端信息结构体指针
 */
void clientUploadFile(void *arg);

/**
 * @brief 客户端请求下载文件
 *
 * @param arg 客户端信息结构体指针
 */
void clientDownloadFile(void *arg);

/**
 * @brief 接收文件
 *
 * @param file_info 文件信息结构体指针
 * @param tunnel_fd 通道文件描述符
 */
void recvFile(FileInfo_t *file_info, int tunnel_fd);

/**
 * @brief 发送文件
 *
 * @param file_info 文件信息结构体指针
 * @param tunnel_fd 通道文件描述符
 */
void sendFile(FileInfo_t *file_info, int tunnel_fd);

#endif /* __TRANSFILE_H */
